
// 入口文件

// Schema、Model、Entity或者Documents的关系请牢记，Schema生成Model，Model创造Entity，
//Model和Entity都可对数据库操作造成影响，但Model比Entity更具操作性。
const mongoose = require('mongoose');
// 连接数据库 如果不自己创建 默认test数据库会自动生成
mongoose.connect('mongodb://localhost/App',{ useNewUrlParser: true });

// 为这次连接绑定事件
const db = mongoose.connection;
db.once('err',() => console.log('Mongo connection err'));
db.once('open',() => console.log('Mongo connection successed'));
/**
 * 连接异常
 */
// db.on('error',function (err) {
//     console.log('Mongoose connection error: ' + err);
// });

/**
 * 连接断开
 */
db.on('disconnected', function () {
    console.log('Mongoose connection disconnected');
});

/************** 定义模式loginSchema **************/
//schema 是mongoose里的一种数据模式，每个schema会映射到mongodb中的一个collection，它不具备操作数据库的能力
const restaurantsSchema = mongoose.Schema({
	name:String,
    addr : String,
    sellNum : Number,
    class: String,
    tags: Array
});
const loginSchema = mongoose.Schema({
	name:String,
    age : Number,
    sex : String,
});
const registerSchema = mongoose.Schema({
	user:String,
    psd : Number,
    userName:String,
    userImg:String,
    birthday:String
});
// 固定查询的集合是login

/************** 定义模型Model **************/
const Models = {
	// login 为数据库中表（集合）名称 mongoose会把名称变为复数 + 's', 第三个参数，可以确定自己的表（集合） 名称
    Login : mongoose.model('login',loginSchema,'login'),
    Register:mongoose.model('Register',registerSchema,'user'),
    restaurants:mongoose.model('restaurants',restaurantsSchema,'restaurants')

}

module.exports = Models;